package com.carlinfo.shop.common.web.controller;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.carlinfo.shop.common.util.DateUtil;
import com.carlinfo.shop.common.util.FileUtil;
import com.carlinfo.shop.common.util.POIUtil;
import com.carlinfo.shop.common.util.PageInfoUtil;

/**
 * 所有Controller的父类
 * @author wangshMac
 *
 */
public class BaseController
{
	/* 所有Controller共用的工具类 */
	@Resource
	protected DateUtil dateUtil ; 
	@Resource
	protected FileUtil fileUtil ; 
	@Resource
	protected POIUtil poiUtil;
	
	/**
	 * 后面生成分页的工具类
	 * @param conds 方法的参数是...,意味着方法在调用处参数的个数可以写多个;在使用处(定义处)当成数组来使用;
	 * ...只能是方法的最后一个参数
	 * 第一个参数是当前页;第二个参数是每页多少条
	 */
	public PageInfoUtil proccedPageInfoUtil(String ... conds)
	{
		PageInfoUtil pageInfoUtil = new PageInfoUtil() ; 
		try
		{
			/* 设置第几页和每页多少条 */
			pageInfoUtil.setCurrentPage(Integer.valueOf(conds[0]));
			pageInfoUtil.setPageSize(Integer.valueOf(conds[1]));
		} catch (NumberFormatException e)
		{
		}
		return pageInfoUtil ; 
	}
	
	/**
	 * 从Cookie获取购物车
	 */
	public JSONArray findShopCarFromCookie(HttpServletRequest request)
	{
		/* 木有登陆,直接取Cookie里面的数据 */
		/* 先从Cookie取老数据 */
		String name = "shop_car";
		String value = ""; 
		Cookie[] cookies = request.getCookies() ; 
		if(cookies != null)
		{
			for (int i = 0; i < cookies.length; i++)
			{
				Cookie cookieTemp = cookies[i];
				if(name.equalsIgnoreCase(cookieTemp.getName()))
				{
					value = cookieTemp.getValue() ; 
					break ; 
				}
			}
			
			/* 第一次就木有一个叫做CookieTemp的 */
		}
		
		/* json
		 * 第一次要new,第二次要更新
		 *  */
		JSONArray shopCarArr = JSON.parseArray(value) ;
		if(shopCarArr == null)
		{
			shopCarArr = new JSONArray() ; 
		}
		return shopCarArr ; 
	}

	/**
	 * 保存购物车
	 */
	public void saveShopCarFormCookie(JSONArray shopCarArr,HttpServletRequest request,HttpServletResponse response)
	{
		/* 存储Cookie的键和值 */
		String name = "shop_car"; 
		String value = shopCarArr.toJSONString() ; 
		Cookie cookie = new Cookie(name, value);
		/* 一定要设置 */
		/*  /是tomcat根路径;tomcat下面有很多个web服务
		 * 相同的Cookie放到不同的路径下面,它是不同的Cookie
		 *  */
		cookie.setPath(request.getContextPath());
		/* expiry:过期时间,单位是秒 */
		cookie.setMaxAge(1000 * 60 * 60 * 24 * 7);
		/* 保存Cookie */
		response.addCookie(cookie);
	}
}
